<?php

/* Portal Pracy - praca magisterska
 * autor: Tomek Ceszke
 * email: tomek.ceszke@gmail.com
 * Politechnika Koszalińska 2007
 */

class UsersController extends AppController
{

	var $name = 'Users';
	var $uses = array('User','Profile','Group','sanitize');
	var $components = array('Email');

	//var $othAuthRestrictions = 'admin';

	function admin_activate($id,$hash)
	{
		$this->autoRender = false;
		
		$this->User->recursive=0;
		$this->User->id = $id;
		$this->data = $this->User->read();

		$username = $this->data['User']['username'];
		$newPasswd = uniqid('tms');

		if($this->_getHash($id,$username)==$hash)
		{
			$this->User->saveField('active',1);
			$this->User->saveField('passwd',md5($newPasswd));
			$this->data['User']['passwd']=$newPasswd;
			$this->_sendToEmployerAdminApprove($this->data);
			$this->flash('Konto aktywowane.','/wyloguj');				
		}
		else
		{
			$this->flash('Błąd aktywacji','/');
			exit();
		}
		
	}
	
	
	
	
	
	
	function registration_emp()
	{
		if($this->othAuth->group('name')=='employer')
		{
			$this->flash('Jesteś już zalogowany.','/profil');
			exit();		
		}

		$id_group = 17;

		if(!empty($this->data))
		{
			$this->data['User']['group_id'] = $id_group;
			$this->data['User']['active'] = 0;

			$user_ok = $this->User->validates($this->data);
			$profile_ok = $this->Profile->validates($this->data);

			if($user_ok AND $profile_ok)
			{
				$this->data['User']['username']=$this->data['User']['username_unique'];
				unset($this->data['User']['username_unique']);
				$this->data['User']['passwd'] = md5(uniqid('tms'));
					
				if($this->User->save($this->data['User']))
				{
					$uid = $this->User->getID();
					$this->data['Profile']['user_id'] = $uid;

					if($this->Profile->save($this->data['Profile']))
					{
						$result = $this->_sendToAdminEmployerRegistrationRequest($this->data);
						$this->flash('Dziękujemy! Prosimy o cierpliwość, po rozpatrzeniu zgłoszenia zostanie wysłana odpowiedź.','/');
						exit();
					}
				}

			}
			else
			{
				$this->set('errorsFound',true);
			}
		}
	}

	function new_password()
	{
		if($this->othAuth->group('name')=='employer')
		{
			$this->flash('Jesteś już zalogowany.','/profil');	
			exit();	
		}

		if(!empty($this->data))
		{
			if($this->User->validates($this->data))
			{
				$this->data['User']['username'] = $this->data['User']['username_exist'];
				unset($this->data['User']['username_exist']);
				
				$this->User->id = $this->User->field("id","User.username='{$this->data['User']['username']}'");
				
				$new_password = uniqid('tms');
					
				$this->data['User']['passwd'] = $new_password;
				
				if($this->User->saveField('passwd',md5($new_password)))
				{
					$result = $this->_sendToEmployerNewPassword($this->data);
					$this->flash('Nowe hasło zostało wysłane na podany adres e-mail.','/loguj/'.$this->data['User']['username']);
					exit();
				}
			}
			else
			{
				$this->set('errorsFound',true);
			}
		}

	}


	// LOGIN===================================================================

	function login($username=null)
	{
		if($this->othAuth->user('id')!=false){
			$this->flash('Jesteś już zalogowany!', '/profil');	
			exit();
		}

		if(!empty($this->data))
		{
			if($this->User->validates($this->data))
			{
				$auth_num = $this->othAuth->login($this->params['data']['User']);
				$this->set('auth_msg', $this->othAuth->getMsg($auth_num));
			}
		}
		if($username!=null)
		{
			$this->data['User']['username']=$username;
		}

	}

	function logout()
	{
		$this->othAuth->logout();
		$this->flash('Zostałeś bezpiecznie wylogowany. Zapraszamy ponownie!','/');
		exit();
	}

	function noaccess()
	{
		$this->flash("Niestety te strony przeznaczone są dla Pracodawcy. Jeżeli chciałbys zamieścić ogłoszenie - zarejestruj się w dziale Pracodawca!",'/pracodawca');
		exit();
	}


	// HELPER===================================================================

	function _getHash($id,$username)
	{
		$key1 = 'aS1de34@eJ&BD32Dw%d$';
		$key2 = 'iy6ryrgy%#tDSgye';

		return md5($id.$key1.$username.$key2);
	}


	function _getAllData()
	{
		$criteria=NULL;
		list($order,$limit,$page) = $this->Pagination->init($criteria);
		return $this->User->findAll($criteria, NULL, $order, $limit, $page);
	}

	function _sendToAdminEmployerRegistrationRequest($pData)
	{
		$linkPostfix = $pData['Profile']['user_id'].'/'.$this->_getHash($pData['Profile']['user_id'],$pData['User']['username']);

		$content = "Prośba o rejestrację nowego pracodawcy.\n\n\n";
		$content = "\n\nEmail:\t\t {$pData['User']['username']}\n";
		$content .= "Imię:\t\t {$pData['Profile']['first_name']} \n";
		$content .= "Nazwisko:\t {$pData['Profile']['last_name']} \n";		
		$content .= "By aktywować to konto kliknij w linka: \n\n";	
		$content .= 'http://'.$_SERVER['HTTP_HOST'].'/praca/admin/users/activate/'.$linkPostfix;

		$this->Email->to = 'tomek.ceszke@gmail.com';
		$this->Email->subject	= '[PORTAL] Rejestracja nowego pracodawcy.';
		$this->Email->text_body = $content;

		//echo $content;

		return $this->Email->send();
	}

	function _sendToEmployerAdminApprove($pData)
	{

		$content = "\nWitaj {$pData['Profile']['first_name']} !\n\n";
		$content .= "Twoje konto w Portalu Pracy zostało zaktywowane! Możesz już sie zalogować klikając w poniższego linka. \n\n";
		$content .= "Twoje hasło: {$pData['User']['passwd']}\n\n";		
		$content .= "Zapraszamy! \n\n";
		$content .= 'http://'.$_SERVER['HTTP_HOST'].'/praca/loguj/'.$pData['User']['username'];

		$this->Email->to = $pData['User']['username'];
		$this->Email->subject	= 'Twoje konto w Portalu Pracy zostało zaktywowane!';
		$this->Email->text_body = $content;

		return $this->Email->send();
	}

	function _sendToEmployerNewPassword($pData)
	{

		$content = "\nWitaj\n\n";
		$content .= "Otrzymujesz ten list, ponieważ na stronach Portalu Pracy zostało wygenerowane nowe hasło dla Twojego konta. \n\n";
		$content .= "Twoje nowe hasło: {$pData['User']['passwd']}\n\n";	
		$content .= "Możesz się zalogować używając poniższego linka! \n\n";
		$content .= 'http://'.$_SERVER['HTTP_HOST'].'/praca/loguj/'.$pData['User']['username'];

		$this->Email->to = $pData['User']['username'];
		$this->Email->subject	= 'Nowe hasło w Portalu Pracy!';
		$this->Email->text_body = $content;

		return $this->Email->send();
	}

}
?>